身為一個主力及興趣在後端的Ruby工程師,這次的鐵人賽,想要挑戰難度有那麼一點高的事情~
那就是用我不熟悉的語言去探索自己道行還很初階的前端世界。(希望努力集氣不要斷賽 lol)
第一天來寫一下我的第一個Why。
Clojure是Lisp程式語言在Java平台上的Functional Programming Language(函數式程式語言)。Functional Programming最大的特點是不可變的(immutable)
及 避免外部狀態相依
。
相對於物件導向程式((Object Oriented Programming,OOP),Functional Programming是很不一樣的設計。為了防止改變外部狀態的side effect發生,導致資料一直被改動,bug卻不知從何追起的狀況發生,最好的方式是讓作用域只能發生在內部。這種將狀態從外部(全域)拉到內部管理的方式也叫做純函數(Pure function):
Pure functions are not allowed to change their state which is exactly opposite to the OOP where any method can mutate the state of the objects. Ref
當然囉~實作Functional Programming概念的程式語言有很多種,除了Clojure,在此列出最近熱門(常被當作鐵人賽主題)的FP語言:
那,為什麼選Clojure?絕對不是因為我看到一篇reddit的吸睛/金標題Why do Clojure programmers earn so much salary?(:P 誤)
As of Aug 28, 2022, the average annual pay for a Clojure Developer in the United States is $154,180 a year.Ref
作為一門Lisp方言,函式在Clojure中是一等公民。此外,Clojure還支援讀取﹣求值﹣輸出迴圈(Repl)以及一套巨集系統Macro。
ClojureScript是Clojure的其中一個版本,可以編譯成JavaScript執行。
更進一步地說,能用JS的地方,都能用 cljs,因為和NPM dependencies無縫接軌地串接整合
只要學一個 Clojure 語言,你就很可能可以辦到Web Server用Clojure, Web Frontend 使用 ClojureScript 來開發的情況。Ref:
根據wiki的說明,統計發現,使用Clojure同時也使用ClojureScript的工程師在2014年為55%,而到了一年後的2015年達到了66%。
對於喜歡一魚二吃的我來說,看到這句話實在是太說服人了呀!
如果這篇文章有一咪咪引起你對Clojure興趣的話,讓我們期待下篇~學習Clojure的勇敢與真實 (clojure-for-the-brave-and-true)
近年來很熱門的FP還有Golang, 不過與文章主旨無關。
學習Clojure以後還能同時了解ClojureScript感覺很划算,一魚兩吃真的很有說服力呢!真是太好了,讓人很想學習,充滿期待。
迫不及待想拜讀大大下一篇文章,加油!
謝謝Bater貓~